Для настройки HTTPS в Apache NiFi нам неоходим сертификат и его закрытый ключ. Можно выпустить самоподписанный сертификат или выпустить его от CA. В данной статье я буду использовать сертификат от Let's Encrypt.
Подготовка
Для начала необходимо преобразовать пару сертификат-ключ в pkcs12
#openssl pkcs12 -export -in /etc/letsencrypt/live/nifi1.vbalkhanakov.ru/fullchain.pem\
-inkey /etc/letsencrypt/live/nifi1.vbalkhanakov.ru/privkey.pem\
-out keystore.p12 -name nifi-cert -password pass:changeit
Так как java-приложения работают с сертификатами через свой контейнер (keystore), экспортируем полученный pkcs12 в keystore.
#keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass changeit -destkeystore keystore.jks -deststoretype JKS -deststorepass changeit -destkeypass changeit -alias nifi-cert
#keytool -importcert -file /etc/letsencrypt/live/nifi1.vbalkhanakov.ru/fullchain.pem -keystore truststore.jks -storetype JKS -alias letsencrypt -storepass changeit -noprompt
Создадим папку /opt/certs и перенесем в нее keystore.jks и truststore.jks
Настройка
После того, как выпустили сертификаты и создали keystore и truststore, можно переходить к настройке HTTPS.
Включаем безопасность
nifi.remote.input.secure=true
#nifi.web.http.host=0.0.0.0
#nifi.web.http.port=8080
nifi.web.https.host=0.0.0.0
nifi.web.https.port=8443
Заполняем настройки для сертификатов. Указываем путь к keystore и truststore, а также к сертифкату
nifi.security.keystore=/opt/certs/keystore.jks
nifi.security.keystore.certificate=/etc/letsencrypt/live/nifi1.vbalkhanakov.ru/fullchain.pem
nifi.security.keystore.privateKey=/etc/letsencrypt/live/nifi1.vbalkhanakov.ru/privkey.pem
nifi.security.keystoreType=JKS
nifi.security.keystorePasswd=changeit
nifi.security.keyPasswd=changeit
nifi.security.truststore=/opt/certs/truststore.jks
nifi.security.truststore.certificate=/etc/letsencrypt/live/nifi1.vbalkhanakov.ru/fullchain.pem
nifi.security.truststoreType=JKS
nifi.security.truststorePasswd=changeit
Выполнеям перезапуск командой ./bin/nifi.sh restart, https настроен. Но по-умолчанию, NiFi настроен в single-user режиме.
Выполним создание пользователя
#./bin/nifi.sh set-single-user-credentials <nifi-login> <nifi-password>
И перезапустим ./bin/nifi.sh restart, чтоб изменения применились.
